package main

import (
	"github.com/kataras/iris/v12"
	"github.com/kataras/iris/v12/context"
	"learn-golang/iris/model"
)

func main() {
	// 1.获取iris的Application对象
	//app := iris.New()
	// 本地测试方法，加入测试日志显示
	app := iris.Default()
	// 日志对象
	log := app.Logger()

	// 2.处理get请求
	app.Get("/", func(context *context.Context) {
		log.Infof("访问的路径为：%v\n", context.Path())
		// 返回HTML代码
		_, err := context.HTML("<h1>hello iris!<h1>")
		if err != nil {
			panic(any(err.Error()))
		}
	})

	// 3.自定义请求类型，满足所有类型。method类型必须大写，否则无法访问
	// restful风格入参，可自定义入参类型，使用 `:数据类型` 可以指定类型接收参数
	app.Handle("GET", "/base/{name}/{age:int}", func(context *context.Context) {
		name := context.Params().Get("name")
		// 使用int类型接收age属性
		age, _ := context.Params().GetInt("age")
		context.Writef("name=%s, age=%d", name, age)
	})

	// 4.引用其他包的方法，目的是为了分割路由组，便于管理
	model.Model(app)

	// 5.启动配置，自定义配置类/yml/tml等
	// 配置类
	app.Configure(iris.WithConfiguration(iris.Configuration{
		// 默认值：utf-8
		Charset: "utf-8",
		// 默认值：Mon, 02 Jan 2006 15:04:05 GMT
		TimeFormat: "Mon, 02 Jan 2006 15:04:05 GMT",
		// 上传文件最大值
		PostMaxMemory: 10 * iris.MB,
	}))

	// yml文件
	ymlConfig := "config/application.yml"
	app.Configure(iris.WithConfiguration(iris.YAML(ymlConfig)))

	// 6.启动服务，监听端口号，端口前须加冒号 `:`
	if err := app.Run(iris.Addr(":8090")); err != nil {
		panic(any(err.Error()))
	}
	//if err := app.Listen(":8090"); err != nil {
	//	panic(any(err.Error()))
	//}
}
